1. Technical Field
This invention generally relates to computer system memory, and more specifically relates to the copying of mirrored memory.
2. Background Art
Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). One key component in any computer system is memory.
One way to boost the reliability of computer systems is to provide mirrored memory. In a computer system with mirrored memory, two separate banks of memory are provided, with each one being a copy (or “mirror”) of the other. One known way to provide mirrored memory uses a memory controller that has two ports, one port for each bank of memory. Writes to either port are propagated to both ports, which results in the memory contents in both banks being identical to each other. In a computer system that has mirrored memory, if a hard error (such as a failed integrated circuit) is detected in one of the memory banks, the other memory bank is used exclusively for reads until the failed memory can be replaced. Once replaced, the contents of the good bank of memory must now be copied to the newly-replaced memory. The process of copying all data from one bank of memory to the other bank of memory is referred to herein as a “mirror copy function.” The mirror copy function is typically made up of several mirror copy operations to small chunks of memory. Once the mirror copy function is complete, the reading from one of the ports that is designated the “master port” is enabled, thereby resuming the mirrored operation of the memory.
The problem with the prior art mirror copy function is the overhead associated with each mirror copy operation. Each time a mirror copy operation is started, the mirrored ports stop accepting normal memory commands, and the read and write queues must be cleared by executing all pending read and write operations. The result of repeating these steps for each and every chunk of memory is decreased system performance during execution of a mirror copy function. Without a way to perform a mirror copy in a way that minimizes the disruption in system performance, the computer industry will continue to be plagued with decreased performance during the execution of a mirror copy function.